High order filters with controllable delay and performance

ABSTRACT

A digital filter is disclosed, the filter comprising a device for determining the initial condition of a partial filter input, using a partitioned filter input signal, and partitioned filter input coefficients and a device for determining the initial condition of a partial filter output, using a partitioned filter output signal, and partitioned filter output coefficients, and a device for realising said digital filter as a sum of outputs of Finite Impulse Response (“FIR”) filter elements, wherein inputs of the FIR filter elements are dependent upon said partial filter input initial condition and said partial filter output initial condition, and said current block of filter input signal values.

FIELD OF THE INVENTION

[0001] The present invention relates to the field of digital filtersand, in particular, to a method and apparatus for efficientimplementation of high order filters, with controllable processing delayand performance.

BACKGROUND OF THE INVENTION

[0002] Digital filters are, among other applications, used to modelelectronic environments. Typical applications of this type include audiofiltering or modelling of acoustic system characteristics. The use ofsuch filters allows incorporation of reverberation effects in audiosignals, adaptive echo cancellation where echoes are undesirable, andproduction of audio signals having a “virtual reality” effect.

[0003] Other areas of application in addition to the audio field includeseismic analysis and robotics.

[0004] A digital filter can be represented mathematically in terms ofits impulse response. This response can form the basis for physicalimplementation which can fall into one of two distinct classes, namelyFinite Impulse Response (FIR) filter implementations, and InfiniteImpulse Response (HR) filter implementations. In general, as thecomplexity of the environment being modelled by the digital filterincreases, the corresponding complexity of the filter structure mustalso increase, if it is to accurately, or at least realistically, modelthe environment. This correspondence between complexity of the modelledenvironment and the complexity of the filter structure applies to bothFIR and IIR filter implementations. The complexity of the resultingfilter is defined by the order of the filter structure.

[0005] Digital filters may, in principle, be implemented in the timedomain, in which case a mathematical convolution process is used torelate the output of the filter to the input of the filter. Digitalfilters may, alternatively, be implemented in the transform domain,using, for example, Fast Fourier Transform AFT) techniques. In contrastto the time domain implementation where the convolution operation isrequired, in the transform domain a multiplication process relates theoutput signal of the filter to the input signal. This results insignificant simplification and consequently, a reduction in the numberof computations required when implementing a filter in the transformdomain, as opposed to the time domain.

[0006] FFT filter implementation methods do, however, have a drawback inthat they are block processes. Thus, where “N” is the order of thefilter being considered, “N” samples of a digital signal must generallybe stored before the first output of the filter can occur. This blockprocessing therefore introduces delay (or latency) in the filterprocessing. In certain applications, latency causes unacceptableperformance. For example, if audio and video signals are both beingdigitally processed in order to produce a multi-media presentation,differential delay between the audio and video signals of more than 10milliseconds may cause lack of synchronisation to be perceived by aviewer.

[0007] Digital filters which are implemented using FIR techniques can,notwithstanding their fundamental block processing nature, beimplemented in a manner in which latency may be reduced This requiresthat the impulse response of the filter which is being modelled bepartitioned into a number of sections along a time axis, and that thesesections each be processed by a suitable FFT structure. Further detailon this process may be found in U.S. Pat. No. 5,502,747 (McGrath). It isnoted that McGrath is applicable to FIR filter implementations, howevernot to IIR filter implementations.

[0008] It is often the case that the impulse response whichcharacterises the particular system being modelled has most of itsenergy, and consequently the important information, concentrated in theinitial portion of the impulse response. Notwithstanding thisdistribution of energy and information, the system impulse response mayoften extend in time well beyond this initial portion FIR filterimplementations are often approximated by implementing only the initialportion of the impulse response. This achieves an economic filterdesign, since the bulk of the information contained in the impulseresponse is included in the FIR model. The penalty however, is that theinformation in the “tail” of the impulse response is lost. Although thisinformation may be of secondary importance, it may nonetheless besignificant when considering the realism achieved by a filter whichmodels an acoustic or other environment.

[0009] IIR filters are a generalisation of the FIR case and can, in somecircumstances, have a simpler mathematical representation than FIRimplementations, and thus can provide a filter implementation having alower order for a given environment than an equivalent FIR filter.

[0010] It is considered desirable to provide a method for implementingdigital filters with controllable processing delay and performance,applicable to both IIR and FIR filters.

SUMMARY OF THE INVENTION

[0011] According to a first aspect of the invention, there is provided amethod of implementing a digital filter, said method comprising, for acurrent block of filter input signal values, the steps of:

[0012] first determining of a partial filter input initial condition,using a partitioned filter input signal, and partitioned filter inputcoefficients;

[0013] second determining of a partial filter output initial condition,using a partitioned filter output signal, and partitioned filter outputcoefficients; and

[0014] realising said digital filter as a sum of outputs of FIR filterelements, wherein inputs of said FIR filter elements are dependent uponsaid partial filter input initial condition, said partial filter outputinitial condition, and said current block of filter input signal values.

[0015] According to another aspect of the invention, there is provided adigital filter comprising:

[0016] first means for determining of a partial filter input initialcondition, using a partitioned filter input signal, and partitionedfilter input coefficients;

[0017] second means for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

[0018] realising means for realising said digital filter as a sum ofoutputs of FIR filter elements, wherein inputs of said FIR filterelements are dependent upon said partial filter input initial condition,said partial filter output initial condition, and said current block offilter input signal values.

[0019] According to another aspect of the invention, there is provided asystem using a digital filter wherein said digital filter comprises:

[0020] first means for determining of a partial filter input initialcondition, using a partitioned filter input signal, and partitionedfilter input coefficients;

[0021] second means for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

[0022] realising means for realising said digital filter as a sum ofoutputs of FIR filter elements, wherein inputs of said FIR filterelements are dependent upon said partial filter input initial condition,said partial filter output initial condition, and said current block offilter input signal values.

[0023] According to another aspect of the invention, there is provided acomputer readable memory medium for storing a program for apparatusimplementing a digital filter, said program comprising:

[0024] first code for determining of a partial filter input initialcondition, using a partitioned filter input signal, and partitionedfilter input coefficients;

[0025] second code for determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and

[0026] code for realising said digital filter as a sum of outputs of FIRfilter elements, wherein inputs of said FIR filter elements aredependent upon said partial filter input initial condition, said partialfilter output initial condition, and said current block of filter inputsignal values.

[0027] According to another aspect of the invention, there is provided acomputer program for apparatus implementing a digital filter, saidprogram comprising:

[0028] first code for determining of a partial filter input initialcondition, using a partitioned filter input signal, and partitionedfilter input coefficients; second code for determining of a partialfilter output initial condition, using a partitioned filter outputsignal, and partitioned filter output coefficients; and

[0029] code for realising said digital filter as a sum of outputs of FIRfilter elements, wherein inputs of said FIR filter elements aredependent upon said partial filter input initial condition, said partialfilter output initial condition, and said current block of filter inputsignal values.

BRIEF DESCRIPTION OF THE DRAWINGS

[0030] A preferred embodiment of the invention will now be described, byway of example only, with reference to the accompanying drawings, inwhich:

[0031]FIG. 1 depicts the relationship between key equations utilised ina first embodiment;

[0032]FIG. 2 illustrates a flow diagram for determining a filter outputsignal;

[0033]FIG. 3 presents a more detailed view of the process flow diagramof FIG. 2;

[0034]FIG. 4 depicts filter coefficients for a first arrangement, aftersegmentation and zero-padding;

[0035]FIG. 5 illustrates an apparatus for implementing the firstarrangement;

[0036]FIG. 6 depicts a flow diagram for a second arrangement;

[0037]FIG. 7 illustrates coefficients for the second arrangement aftersegmentation and zero padding;

[0038]FIG. 8 depicts an apparatus for implementing the secondarrangement; and

[0039]FIG. 9 illustrates how the described arrangements can be practicedusing a general-purpose computer.

DETAILED DESCRIPTION INCLUDING BEST MODE

[0040] Where reference is made in any one or more of the accompanyingdrawings to steps and/or features, which have the same referencenumerals, those steps and/or features have, for the purposes of thisdescription, the same function(s) or operation(s), unless the contraryintention appears.

[0041] The general convolution Equation describing a digital filter withan input x(n) and an output y(n) is as follows: $\begin{matrix}{{\sum\limits_{m = 0}^{na}{{a(m)} \cdot {y\left( {n - m} \right)}}} = {\sum\limits_{r = 0}^{nb}{{b(r)} \cdot {x\left( {n - r} \right)}}}} & (1)\end{matrix}$

[0042] where: y(n) is the output sequence

[0043] x(n) is the input sequence

[0044] a(n) is the output coefficient window

[0045] b(n) is the input coefficient window

[0046] na is the order of the output coefficient window

[0047] nb is the order of the input coefficient window

[0048] “m” and “r” are the indices of the summations

[0049] The normalised time domain representation of the output of an IIRfilter structure is derived from equation (1), and is provided by thefollowing mathematical equation: $\begin{matrix}{{{y(n)} = {{\sum\limits_{r = 0}^{nb}\quad {{b(r)} \cdot {x\left( {n - r} \right)}}} - {\sum\limits_{m = 1}^{na}\quad {{a(m)} \cdot {y\left( {n - m} \right)}}}}};\quad {{a(0)} = 1}} & (2)\end{matrix}$

[0050] where y(n) is the IIR filter output response. If a(m)=0 for allm>0, then this describes an FIR filter. A z-transform representation ofy(n) is provided by the following mathematical equation: $\begin{matrix}{{{Y(z)} = \frac{{X(z)} \cdot {B(z)}}{A(z)}},{{a(0)} = 1.}} & (3)\end{matrix}$

[0051] where z is a complex variable; and

[0052] X(z) is the z transform of the input sequence x(n), B(z) is the ztransform of the input coefficient window b(n), and A(z) is the ztransform of the output coefficient window a(n).

[0053] IIR filters can be implemented using FFT techniques, bydecomposing the IIR system into segments, and specifying the initialconditions for each segment. This is conveniently performed usingz-transform techniques. Thus, Equation (3) can be represented asfollows: $\begin{matrix}{{Y(z)} = {\frac{{X(z)} \cdot {B(z)}}{A(z)} + \frac{{G(z)} - {F(z)}}{A(z)}}} & (4)\end{matrix}$

[0054] where F(z) and G(z) are the z-transforms of the initialconditions f(n) and g(n).

[0055] The relationship between f(n) and its z transform F(z), andbetween g(n) and its z transform G(z), are given by the following twoequations: $\begin{matrix}{{F(z)} = {\sum\limits_{n = 0}^{{na} - 1}{{f(n)} \cdot z^{- n}}}} & (5) \\{{G(z)} = {\sum\limits_{n = 0}^{{nb} - 1}{{g(n)} \cdot z^{- n}}}} & (6)\end{matrix}$

[0056] The time domain representations for f(n) and g(n) are provided bythe following equations: $\begin{matrix}{{{f(n)} = {\sum\limits_{r = 0}^{{na} - n - 1}\quad {{a\left( {n + r + 1} \right)} \cdot {y\left( {{- 1} - r} \right)}}}},{0 \leq n \leq {{na} - 1}}} & (7) \\{{{g(n)} = {\sum\limits_{r = 0}^{{nb} - n - 1}\quad {{b\left( {n + r + 1} \right)} \cdot {x\left( {{- 1} - r} \right)}}}},{0 \leq n \leq {{nb} - 1}}} & (8)\end{matrix}$

[0057] Considering equation (4), if h₁(n) is defined to be the inversez-transform of B(z)/A(z), and h₂(n) to be the inverse z-transform of1/A(z), then the solution in the time domain to Equation (4) can bewritten as follows: $\begin{matrix}{{{y(n)} = {{\sum\limits_{r = 0}^{\infty}\quad {{h_{1}(r)} \cdot {x\left( {n - r} \right)}}} - {\sum\limits_{r = 0}^{\infty}\quad {{h_{2}(r)} \cdot {f\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{\infty}\quad {{h_{2}(r)} \cdot {g\left( {n - r} \right)}}}}};{0 \leq n}} & (9)\end{matrix}$

[0058] Equation (9) which is couched in the time domain, shows how theoutput y(n) of the IIR filter can be written as the sum of threeconvolutions. It is noted that the impulse responses h₁(n) and h₂(n)have infinite summation limits, and hence are not amenable to directimplementation. However, since only N output samples are of interest,Equation (9) can be re-written in terms of N output samples only, asfollows: $\begin{matrix}{{y(n)} = {{\sum\limits_{r = 0}^{N - 1}\quad {{h_{1}(r)} \cdot {x\left( {n - r} \right)}}} - {\sum\limits_{r = 0}^{{n\quad a} - 1}\quad {{h_{2}(r)} \cdot {f\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{{n\quad b} - 1}\quad {{h_{2}(r)} \cdot {g\left( {n - r} \right)}}}}} & (10)\end{matrix}$

[0059] where 0<=n<N

[0060] Equation (10) shows that the next N output samples of y(n) can bewritten as the sum of three finite convolutions for any section oflength N, provided that the initial conditions which pertain to thatsection are known.

[0061] Calculation of the initial conditions (i.e. equations (7) and(8)) requires that the previous “nb” input samples, and the previous“na” output samples be available (where “na” and “nb” are the upperlimits of the summations of the convolutions for h₂ in Equation (10)).

[0062] The following substitution of variables is performed in regard toEquations (7) and (8):

k=n+r+1

[0063] Equations (7) and (8) then have the following resultant form:$\begin{matrix}{{{f(n)} = {\sum\limits_{k = {n + 1}}^{n\quad a}\quad {{a(k)} \cdot {y\left( {n - k} \right)}}}},{0 \leq n \leq {{n\quad a} - 1}}} & (11)\end{matrix}$

$\begin{matrix}{{{g(n)} = {\sum\limits_{k = {n + 1}}^{n\quad b}\quad {{b(k)} \cdot {x\left( {n - k} \right)}}}},{0 \leq n \leq {{n\quad b} - 1}}} & (12)\end{matrix}$

[0064] The convolutions in Equations (10)-(12) are finite, and thus lendthemselves to physical implementation, for example using FFT techniques.The length of the required FFT structure is given by the following:

N _(FFT)>=(Maximum value of na or nb)+N  (13)

[0065] Equation (10) enables the output y(n) of the filter to becalculated at a future time “n” by calculating three convolutions. Thus,Equation (10) enables the filter output to be calculated at any futuretime n, where n lies between 0 and N−1. Considering the time domainrepresentation of the output signal being calculated, this means thatthe signal y(n) extends from time 0 onwards towards infinity, calculatedin blocks of N samples.

[0066] For a filter of order N, the latency is proportional to N.Equation (12) shows that the FFT implementation length N_(FFT) must begreater than the larger of the order of a(n) and b(n) (i.e., “na” and“nb” respectively, as seen from Equation (1).

[0067] The latency of the present filter structure being considered isN, and since the FFT implementation length N_(FFT) must be greater thanthe order of both a(n) and, b(n), the generally used “overlap and save”FFT algorithm is most efficiently implemented when the delay (insamples), i.e. the order of the filter, is defined by the followingequation:

N=N _(FFT)/2

[0068] This condition limits the order of the IIR filter to N (i.e.length is N+1).

[0069] An FFT filter structure of length N can be “executed” as often asdesired in order to obtain the filter output values. Thus, for example,an FFT structure of order 4096 can, if desired, be executed every 512samples (i.e. N_(FFT) is equal to 8N). Under these conditions however,the FFT algorithm becomes very inefficient, where efficiency is definedas the number of multiply-and-accumulate operations required per sampleof output signal.

[0070] The problem of efficiency vs delay exists when N<na or N<nb, andcan be solved by the method described herein. Since only N outputsamples of Equation (10) are of interest, it follows that only N samplesof f(n), g(n), h₁(n), h₂(n) are required. The sample values for h₁(n)and h₂(n) are known, and thus solution of Equation (10) is reduced tothe problem of finding an efficient method of calculating the first Nsamples for both f(n) and g(n). To simplify computation, the newvariable M is introduced, where:

M.N=na=nb  (14)

[0071] This simplification is not necessary in general. There can be anM value for b(n) (ie. M_(b)), and an M value for a(n) (ie. M_(a)). Thecorresponding general conditions are then given by

M _(a) .N≧na+1

M _(b) .N≧nb+1  (14a)

[0072] In order to ensure that Equation (14) is true in general, thesequences a(n) and b(n) in Equations (11) and (12) are zero padded. Thisis explained in more detail with reference to FIGS. 3 and 4. A change innotation is also introduced to Equation (10), namely a subscript “i” isadded to y(n), in order to indicate that the ith block of N samples ofy(n) is being considered, beginning at i=0. With the above mentionedchanges of variables and notation introduced, Equation (10) can bewritten as follows: $\begin{matrix}{{{{y_{i}(n)} = {{\sum\limits_{r = 0}^{N - 1}\quad {{h_{1}^{\prime}(r)} \cdot {x_{i}\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{N - 1}{{h_{2}^{\prime}(r)} \cdot \left( \quad {{g_{i}^{\prime}\left( {n - r} \right)} - {f_{i}^{\prime}\left( {n - r} \right)}} \right)}}}};}{0 \leq n < N}} & (15)\end{matrix}$

[0073] where: y_(i)(n)=y(n+i.N); where 0≦n<N and 0≦i<∞

[0074] x_(i)(n)=x(n+i.N); where 0≦n and 0≦i<∞

[0075] =y_(i)(n)=0; N≦n or n<0

[0076] h′_(i)(n)=first N samples of h₁(n)

[0077] h′₂(n)=first N samples of h₂(n)

[0078] f′(n)=first N samples of f(n) i.e., partial initial conditions ofoutput at time i.N

[0079] g′(n)=first N samples of g(n) i.e., partial initial conditions ofinput at time i.N

[0080] Equation (11) can be rewritten using the new variable M, and bypartitioning y(n) into blocks of N samples, the equation can beexpressed as follows: $\begin{matrix}{{{{f_{i}^{\prime}(n)} = {\sum\limits_{k = {n + 1}}^{{MN} - 1}\quad {{a(k)} \cdot {y\left( {{i \cdot N} + n - k} \right)}}}},{0 \leq n < N}}{{{{Let}\quad {a^{\prime}(n)}} = {a(n)}},{1 \leq n < {M \cdot N}}}} & (16)\end{matrix}$

[0081] a′(n)=0, elsewhere

[0082] A similar equation can be written for g_(i)′(n). Equations (11)and (12) can accordingly be rewritten as follows: $\begin{matrix}{{f_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\quad {\sum\limits_{k = 0}^{N - 1}\quad {{a^{\prime}\left( {n - k + {j \cdot N} - 1} \right)} \cdot {y_{i - j}(k)}}}}} & (17) \\{{g_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\quad {\sum\limits_{k = 0}^{N - 1}\quad {{b^{\prime}\left( {n - k + {j \cdot N} - 1} \right)} \cdot {x_{i - j}(k)}}}}} & (18)\end{matrix}$

[0083] Thus, using Equation (17), the first N samples of f(n) can becalculated by performing an N point convolution M times. Equation (18)similarly shows that the first N samples of g(n) can be calculated byperforming an N point convolution M times. Equations (15), (17) and (18)provide the conceptual basis for implementing preferred arrangements ofthe invention.

[0084] Another arrangement is possible by partitioning a′(n) and b′(n)differently. In this method we break a′(n) into sections of length N asfollows.

[0085] Let

[0086] a_(m)′(k)=a′(k+m.N), 0≦k<N, 0≦m<M

[0087] =0 elswhere $\begin{matrix}{{f_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\quad {\sum\limits_{k = 0}^{N - 1}\quad {\left( {{a_{j - 1}^{\prime}\left( {n + N - k - 1} \right)} + {a_{j}^{\prime}\left( {n - k - 1} \right)}} \right) \cdot {y_{i - j}(k)}}}}} & (19) \\{{g_{i}^{\prime}(n)} = {\sum\limits_{j = 1}^{M}\quad {\sum\limits_{k = 0}^{N - 1}\quad {\left( {{b_{j - 1}^{\prime}\left( {n + N - k - 1} \right)} + {b_{j}^{\prime}\left( {n - k - 1} \right)}} \right) \cdot {x_{i - j}(k)}}}}} & (20)\end{matrix}$

[0088] We note from equation (19) that a_(j-1)′(n+N−k−1) is a timeshifted version of a_(j-1)′(n+k−1), where the shift is by N samples. Ifwe only store coefficients a_(m)(k) and b_(m)(k) then the convolutionequations (19) and (20) can be computed by shifting beforemultiplication. In the frequency domain is this equivalent tomultiplying by a complex exponential. If a Modified Discrete FourierTransform (MDFT) form of the DFT is used this is equivalent tomultiplication by the complex operator −j({square root}−1). Furtherdetails on the MDFT can be found in J. L. Vemet—“Real Signals FastFourier Transform: Storage Capacity and Step Number Reduction by Meansof an Odd Discrete Fourier Transform”, IEEE Proc., October 1971 pp1531-1532.

[0089] A special class of IIR filters exist in which b(n) is an impulse,these filters being known as ‘All pole IIR filters’. The all polerequirement is expressed mathematically as follows:

b(n)=b ₀, n=0

b(n)=0, elsewhere

[0090] This class of filter has many applications in signal processingincluding speech synthesis and speech recognition. Further optimisationsof arrangements for such filters can be performed, since there is noneed to calculate g(n), and h₁(n) and h₂(n) are the same.

[0091] A similar case can be applied to represent FIR filters if thefollowing conditions are applied.

a(n)=0, n>0

[0092] Equation (15) can be rewritten to take advantage of furtheroptimisations in this case, since h′₂(n)=1 and f_(i)(n)=0 for all i.Equation (15) can thus be rewritten for the FIR case, and simplified asfollows: $\begin{matrix}{{y_{i}(n)} = {{\sum\limits_{r = 0}^{N - 1}\quad {{h_{1}^{\prime}(r)} \cdot {x_{i}\left( {n - r} \right)}}} + {\sum\limits_{r = 0}^{N - 1}\quad {g_{i}^{\prime}\left( {n - r} \right)}}}} & (21)\end{matrix}$

[0093] Turning to FIG. 1, a block diagram representation depicting therelationship between the equations (15), (17) and (18) is shown. The keyequations are depicted as 102 (see equation (15)), 100 (see equation(17)), and 104 (see equation (18)). Filter characteristics 106 areprovided as inputs to the process, providing the basis for ascertainingthe a′(n) coefficients (see arrow segment 108) and the b′(n)coefficients (see arrow segment 110). These characteristics 106 alsoprovide the basis for ascertaining the h′₁(r) coefficients and h′₂(r)coefficients (see arrow segment 112). Filter “previous” input values 114are also provided to the process, and are utilised in the equation 102(see arrow segment 116) and in the equation 104 (see arrow segment 118).The “previous” filter output values are also provided to the process,and are utilised in the equation 100 (see dashed arrow segment 128). Theequation 104 outputs the g′_(i)(n) coefficients, and these are providedto the equation 102 as depicted by an arrow segment 120. The equation100 outputs the f′i(n) coefficients, and these are provided to theequation 102 as depicted by an arrow segment 122. The equation 102,having been provided with inputs as described above, outputs a filteroutput y_(i)(n) (depicted as 126) for the ith block of N data samples.This is required not only as the actual output 126 of the filter, butalso as an input to the equation 100 in the next iteration of theprocess, as depicted by the dashed arrow segment 128.

[0094] Turning to FIG. 2, a process 212 for the determination of afilter output in accordance with equations (15), (17) and (18) is shown.The process 212 commences with start step 200, after which it proceedsto a step 208 where a new input block is obtained. The process 212proceeds to steps 202 and 204, where current input and output filterinitial conditions respectively are calculated. Thereafter, in a step206, a current filter output signal is calculated. The process 212 thenreturns, as depicted by an arrow 210, to the step 208 and repeats aspreviously described.

[0095] Turning to FIG. 3, a more detailed flow diagram for theaforementioned process, now designated by the reference numeral 324, isshown. The process 324 commences with a start step 300, and progressesto a step 302 where a(n) and b(n) coefficients are segmented in time,and padded with zeros to form segmented coefficient sets a′(n) andb′(n). Proceeding to a step 304, h′₁(n) and h′₂(n) are calculated inaccordance with Equation (24). In a following step 305, a′(n) and b′(n)are partitioned into m sections, as described in more detail in regardto FIG. 4. Thereafter in a step 306, a′(n), b′(n), h′₁(n) and h′₂(n) aretransformed from the sampled time domain into a sampled frequencydomain, preferably using a modified Discrete Fourier Transform (MDFT).In a next step 308, transformed values A′(k) are loaded into an “AK”register set, B′(k) values are loaded into a “BK” register set, andH′₁(k) and H′₂(k) are loaded into “H1K” and “H2K” registersrespectively. Proceeding to a step 310, register sets X and Y whichstore previous X_(i-m)(k) and previous Y_(i-m)(k) values respectively,are initialised, typically with zeros and where ‘m’ varies from 1 to M.In a following step 312, initial conditions F_(i)′(k), G_(i)′(k) and{G_(i)′(k)−F_(i)′(k)} are determined. Moving to a step 316, the“present” X_(i)(k) is calculated by appending zeros to the “present”x(n) values, and the resultant sequence is transformed to become the“present” X_(i)(k). Moving to a step 318, the “present” Y_(i)(k) valueis calculated, and inverse transformed into “present” y(n) values whichrepresent the desired filter output. These values are output in a step320. The “present” y(n) value is also zero padded and transformed toY_(i)(k) in a step 322. Moving to a step 314, the next ‘i’ iscalculated, which can be performed by (i) modifying the register sets Xand Y such that X_(i-M)(k) and Y_(i-M)(k) are discarded, and (ii)shifting contents of the registers down such thatX_(i-M)(k)=X_(i-m+1)(k) and Y_(i-)(k)=Y_(i-m+1)(k) for m=M, m=M−1, . . ., m=2, such that the Y(k) calculated at step 322 becomes Y_(i−1)(k) forthe next cycle of the method, and the X(k) calculated at step 316becomes X_(i-1)(k) for the next cycle of the process 324. The process324 then proceeds again to the step 312 and so on.

[0096] A first exemplary arrangement is now described, firstly inrelation to FIG. 4. Having reference to Equation (2) which shows ageneral form of an IIR filter having coefficients a(n) and b(n), for thepurposes of the example, the following is defined:

na+1=nb+1=M.N  (22)

[0097] where na=nb=31, N=8, hence M=4 $\begin{matrix}{{\sum\limits_{k = 0}^{31}\quad {{a(k)} \cdot {y\left( {n - k} \right)}}} = {\sum\limits_{r = 0}^{31}\quad {{b(r)} \cdot {x\left( {n - r} \right)}}}} & (23)\end{matrix}$

[0098] a(0)=1, ie. normalised coefficients

[0099] Turning to FIG. 4, the segmentation (see the step 302 in FIG. 3)of the coefficients a(n) and b(n) proceeds by setting the first samplea(0) (depicted as 400 in FIG. 4) and b(0) (depicted as 402 in FIG. 4)equal to zero and appending N zeros (depicted as 404-406 in FIG. 4) toa(n) and N zeros (depicted as 408-410 in FIG. 4) to b(n) to create thecoefficients a′(n) and b′(n). The coefficients a′(n) and b′(n) are thenbroken into M sections of 2.N samples where each section overlaps theprevious section by N samples. The segmented coefficients a′_(m)(n) andb′_(m)(n) are depicted as 412-414 and 416-418 respectively in FIG. 4.

[0100] The coefficients h₁(n) and h₂(n) are calculated (see the step 304in FIG. 3) from the convolution of Equation (2) where the input is aunit impulse as shown in the following Equations. $\begin{matrix}\begin{matrix}{{{h_{1}^{\prime}(n)} = {{b(n)} + {\sum\limits_{r = 1}^{N}\quad {{a(r)} \cdot {h_{1}^{\prime}\left( {n - r} \right)}}}}}\quad} \\{{h_{2}^{\prime}(n)} = {{\sum\limits_{r = 1}^{N}\quad {{{a(r)} \cdot {h_{2}^{\prime}\left( {n - r} \right)}}\quad 0}} \leq n < N}}\end{matrix} & (24)\end{matrix}$

[0101] The coefficients a′_(m)(n), b′_(m)(n), h′₁(n), and h′₂(n) arethen transformed (see the step 306 in FIG. 3) from the sampled timedomain into a sampled frequency domain with a Fast Fourier Transform(FFT), a Modified Discrete Fourier Transform (MDFT), or any othervariant of the Discrete Fourier Transform (DFT) such that the operationof convolution in the time domain is equivalent to multiplication in thetransformed domain. In fact, any other transform can be used in whichconvolution in the time domain is equivalent to a less computationallyintensive operation in the transform domain. The transformedcoefficients are A′_(m)(k), B′_(m)(k), H′₁(k), and H′₂(k) respectively.The preferred arrangement uses a MDFT since this form of the DFT isoptimised for real coefficients and transforms 2.N real time samplesinto N complex frequency samples. The transformed coefficients using theMDFT are shown mathematically in equations (25)-(28). $\begin{matrix}{{{A_{m}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{a_{m}^{\prime}(n)} - {j*{a_{m}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (25) \\{{{B_{m}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{b_{m}^{\prime}(n)} - {j*{b_{m}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (26) \\{{{H_{1}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{h_{1}^{\prime}(n)} - {j*{h_{1}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (27) \\{{{H_{2}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}{\left( {{h_{2}^{\prime}(n)} - {j*{h_{2}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{nk} \cdot W_{2 \cdot N}^{n/2}}}},{0 \leq k < {N.}}} & (28)\end{matrix}$

[0102] where 0≦m<M

[0103] Turning to FIG. 5, still having regard to the first arrangement,the transformed coefficients H′₁(k) and H′₂(k) are placed into storageregisters 5050 and 5100. A number of storage buffers 5010-5045 for thetransformed input signal X_(m)(k) and transformed output signal Y_(m)(k)are initialised with zeros. The input signal x(n), which is stored in aregister 5000 is sampled and is processed in blocks of N samples.Previously transformed inputs X_(m)(k) are stored in the storage buffers5010-5025 and previously transformed outputs Y_(m)(k) are stored in thestorage buffers 5030-5045. The transformed contents of the input storagebuffers 5010-5025 are multiplied, using respective multipliers 5160-5175by respective coefficients B′_(m)(k), which are stored in acorresponding number of registers 5055-5070. The multiplication resultsare summed in a summer 5150. The transformed contents of the outputstorage buffers 5030-5045 are similarly multiplied, using respectivemultipliers 5180-5195, by coefficients A′_(m)(k) which are stored inrespective registers 5075-5090. The multiplication result is summed in asummer 5095.

[0104] In an alternative arrangement, the two distinct summation pointsshown in FIG. 5 (ie. 5095 and 5150), can be implemented by a singlesummation unit. The need for separate summation units becomes evident ifM_(a) does not equal M_(b) as shown in equations (14a). In theillustrated arrangement in FIG. 5, M_(a) equals M_(b) which equals Mwhich equals 4.

[0105] The result from the summer 5150 is directed to a positivepolarity input of a summer 5096. The result from the summer 5095 isdirected to a negative polarity input of the summer 5096. The summer5096, by virtue of the aforementioned polarities, subtracts the resultfrom the summer 5150 from the result from the summer 5095. The result ofthe aforementioned subtraction is directed to the Inverse MDFT operation5120. In an alternative arrangement, the subtraction can be converted toa summation by negating (ie reversing the polarity) of the coefficientsA′_(m)(k) which are stored in registers 5075-5090. The second half ofthe data (ie. samples from N to 2.N−1) from the Inverse MDFT process5120 are the coefficients f′(n) and g′(n) as stated in equations(17)-(18). The first half (ie. samples from 0 to N−1) is the errorresulting from circular convolution. The first half of the data isdiscarded to create N coefficients “g′(n)-f′(n)” which are stored inregister 5115. The N coefficients “g′(n)-f′(n)” in register 5115 areappended with N zeros to create a sequence of length 2.N and thentransformed via MDFT operation 5110 into N complex frequency samples. Atthis point the X_(m)(k) input storage buffers 5010-5025 and the Y_(m)(k)output storage buffers 5030-5045 are shifted one place down. The inputshifting operation is as follows:

[0106] X⁻³(k) in register 5025 is discarded

[0107] X⁻²(k) in storage buffer 5020 is placed in X⁻³(k) storage buffer5025

[0108] X⁻¹(k) in storage buffer 5015 is placed into X⁻²(k) storagebuffer 5020

[0109] X₀) in storage buffer 5010 is placed in X⁻¹(k) storage buffer5015.

[0110] The output shifting operation is as follows:

[0111] Y⁻³(k) in register 5045 is discarded

[0112] Y⁻²(k) in storage buffer 5040 is placed in Y⁻³(k) storage buffer5045

[0113] Y⁻¹(k) in storage buffer 5035 is placed into Y⁻²(k) storagebuffer 5040

[0114] Y⁻⁰(k) in storage buffer 5030 is placed in Y⁻¹(k) storage buffer5035.

[0115] The shifting operation need not be a copying of data and in thepreferred embodiment of the invention the position of the first storagebuffer in relation to the rest is modified to avoid any copying of data.The N input samples x(n) in register 5000 are appended with N zeros andtransformed via an MDFT operation 5005 to create N complex frequencysamples which are then placed in X₀(k) storage register 5010. The N newcomplex frequency input samples X₀(k) in the register 5010 aremultiplied via multiplier 5155 with coefficients H′₁(k) in the register5050. The previous calculation “G(k)-F(k)” which is stored in a register5110, is multiplied via a multiplier 5195, with coefficients H′₂(k)which are stored in the register 5100. The output from the multipliers5155 and 5195 are summed in a summer 5125, the output of which is thentransformed via an Inverse MDFT operation 5130. The first N samples ofthe resultant are kept and placed in a y(n) output storage buffer 5135.The N samples of y(n) are then appended with N zeros and stored in aregister 5140. The appended N samples are then transformed via a MDFToperation 5145, and the result is placed in a Y₀(k) storage buffer 5030.The procedure then continues for each block of N inputs of x(n) storedin register 5000 creating N outputs of y(n) 5135. An exemplary codefragment relating to FIG. 5 using the Matlab™ Simulation Package,Release 11, v5.1, is contained in the Appendix.

[0116] The special case of an all pole filter is similar to above,however the storing of previous inputs X⁻¹(k), X⁻²(k), and X⁻³(k) inregisters 5015-5025 is not necessary since the values of B′_(m)(k) areall zero. Also in the all pole case H1(k) and H2(k) are the same so themultiplications at 5155 and 5195 and summation at 5125 can be optimisedto a single multiplication and addition.

[0117] Turning to FIG. 6, a process flow diagram for anotherarrangement, being an “FIR filter” according to equation (21), is shown.The process 622 commences with a start step 600, and progresses to astep 602 where b(n) coefficients are segmented in time, and padded withzeros to form a segmented coefficient set b′(n). Proceeding to a step604, h′₁(n) is calculated. In a step 605, b′(n) is partitioned into msections. Thereafter in a step 606, b′(n), and h′₁(n) are transformedfrom the sampled time domain into a sampled frequency domain, preferablyusing a modified Discrete Fourier Transform (MDFT). In a next step 608,the transformed values B′_(m)(k) are loaded into an “BK” register set,and the values H′₁(n) are loaded into “H1K” registers respectively.Proceeding to a step 610, the register set X for holding X_(i-m)(k)values is initialised, typically with zeros, and where m varies from 1to M. In a following step 612, the initial conditions G′_(i)(k) arecalculated. Moving to a step 616, the “present” X_(i)(k) is calculatedby appending zeros to the “present” x(n) values, and the resultantsequence is transformed to become the “present” X_(i)(k). Moving to astep 618, the “present” Y(k) value is calculated, and inversetransformed into “present” y(n) which is the desired filter output,these being output in a step 620. Moving to a step 614 the next ‘i’ iscalculated, which can be considered to be the action of modifyingregister set X such that X_(i−M)(k) is discarded, and the registervalues are shifted down such that X_(i−m)(k)=X_(i−m+1)(k) for m=M,m=M−1, . . . , m=2, such that X(k) value calculated at the step 616becomes the X_(i−)1(k) value for the next cycle. The method 622 thenproceeds to the step 612 and so on.

[0118] Turning to FIG. 7, exemplary data for the second arrangement isshown. Having reference to Equation (21) which relates to an FIR filterhaving coefficients b(n), equations (22) and (23) are restated here forthe FIR case, the restated euqations being designated as Equations (29)and (30).

nb+1=M.N  (29)

[0119] and nb=31, N=8, hence M=4 $\begin{matrix}{{y(n)} = {\sum\limits_{r = 0}^{31}\quad {{b(r)} \cdot {x\left( {n - r} \right)}}}} & (30)\end{matrix}$

[0120] The segmentation of the coefficients b(n) proceeds by setting thefirst sample b(0) (depicted as 702 in FIG. 7) equal to zero andappending N zeros (depicted as 708-710 in FIG. 7) to b(n) to create thecoefficients b′(n). The coefficients b′(n) are then broken into Msections of 2.N samples each, where each section overlaps the previoussection by N samples. The segmented coefficients b′_(m)(n) are shown as716-718 in FIG. 7.

[0121] The coefficients h′₁(n) are the first N (where N=8) samples ofb(n) and h₂(n) is equal to “1”, this being expressed mathematically asfollows:

h′ ₁(n)=b(n) n=0 . . . 7  (31)

[0122] The coefficients b′_(m)(n), and h′₁(n) are then transformed fromthe sampled time domain into a sampled frequency domain with a FastFourier Transform (FFT), a Modified Discrete Fourier Transform (MDFT),or any other variant of the Discrete Fourier Transform (DFT) such thatthe operation of convolution in the time domain is equivalent tomultiplication in the transformed domain. The transformed coefficientsare B′_(m)(k), and H′₁(k) respectively. An MDFT is again preferably usedsince this form of the DFT is optimised for real coefficients andtransforms 2.N real time samples into N complex frequency samples. Thetransformed coefficients using the MDFT, shown mathematically inequations (25)-(28), are restated here for convenience as follows:$\begin{matrix}{{{B_{m}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}\quad {\left( {{b_{m}^{\prime}(n)} - {j*{b_{m}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{n\quad k} \cdot W_{2.N}^{n/2}}}},{0 \leq k < {N.}}} & (32) \\{{{H_{1}^{\prime}(k)} = {\sum\limits_{n = 1}^{N}\quad {\left( {{h_{1}^{\prime}(n)} - {j*{h_{i}^{\prime}\left( {n + N} \right)}}} \right) \cdot W_{N}^{n\quad k} \cdot W_{2.N}^{n/2}}}},{0 \leq k < {N.}}} & (33)\end{matrix}$

[0123] where 0≦m<M

[0124] Turning to FIG. 8, an apparatus 8192 for implementing theaforementioned second arrangement is shown. The transformed coefficientsH′₁(k) relating to the second arrangement are placed into a storageregister 8050. Storage buffers 8010-8025 for the transformed inputsignal X_(m)(k) are initialised with zeros. The input signal x(n), whichis stored in a register 8000, is sampled and is processed in blocks of Nsamples. Previously transformed inputs X_(m)(k) are stored in thestorage buffers 8010-8025. The transformed contents of the input storagebuffers 8010-8025 are multiplied using respective multipliers 8160-8175,by respective coefficients B′_(m)(k) which are stored in respectiveregisters 8055-8070. The multiplication results are summed in a summer8150, and then the result is stored in a register 8190.

[0125] Thereafter, the X_(m)(k) output storage buffers 8010-8025 areshifted one place down. The input shifting operation is as follows:

[0126] X⁻³(k) in register 8025 is discarded

[0127] X⁻²(k) in storage buffer 8020 is placed in X⁻³(k) storage buffer8025

[0128] X⁻¹(k) in storage buffer 8015 is placed in X⁻²(k) storage buffer8020

[0129] X⁻⁰(k) in storage buffer 8010 is placed in X⁻¹(k) storage buffer8015.

[0130] The shifting operation need not comprise a copying of data andpreferably the position of data in the first storage buffer in relationto data in the rest of the storage buffers is modified to avoid anycopying of data. The N input samples x(n) in the register 8000 areappended with N zeros and transformed via an MDFT operation 8005 tocreate N complex frequency samples which are then placed in the X₀(k)storage register 8010. The N new complex frequency input samples X₀(k)in the register 8010 are then multiplied using a multiplier 8155 withcoefficients H′₁(k) from the register 8050. The multiplication outputthereof is then summed in a summer 8125 together with the value in theregister 8190. The output of the summer 8125 is then transformed via anInverse MDFT operation 8130. The first N samples of the resultant arekept and placed in a y(n) output storage buffer 8135, these samplesbeing the desired output. The aforementioned procedure then continuesfor each block of N inputs of x(n) stored in the register 8000, therebycreating N outputs of y(n) stored in register 8135.

[0131] The aforementioned arrangements can be implemented using ageneral-purpose computer 900 as illustrated in FIG. 9. The variousprocesses described are implemented as software executing on thecomputer 900. In particular, the various process steps are effected byinstructions in the software that are carried out by the computer 900.The software can be stored in a computer readable medium, is loaded ontothe computer 900 from the medium, and then executed by the computer 900.The use of the computer program product in the computer preferablyimplements a high order filter with desired attributes and performance.The computer system 900 includes a computer module 902, a filter inputcard 916, and input devices keyboard 918 and pointing device 920. Inaddition, the computer system 900 can have any of a number of otheroutput devices including a display 924. The computer system 900 isconnected to one or more other computers using an appropriatecommunication channel such as a modem communications path, a computernetwork, or the like. The computer network can include a local areanetwork (LAN), a wide area network (WAN), an Intranet, and/or Internet.Thus, for example, signals are input via filter input card 916, controlcommands are input via keyboard 918, and the desired signal having beenprocessed by the desired high order filter is output via filter outputcard 910. The computer 902 itself includes at least one centralprocessing unit 904 (simply referred to as a processor hereinafter), amemory 906 which can include random access memory (RAM) and read-onlymemory (ROM), an input/output (IO) interface 908, a filter inputinterface 922, and one or more storage devices generally represented bya block 912. The storage device(s) 912 can include one or more of thefollowing: a floppy disk, a hard disk drive, a magneto-optical diskdrive, CD-ROM, magnetic tape or any other of a number of non-volatilestorage devices well known to those skilled in the art. Each of thecomponents 904, 906, 908, 912 and 922, is typically connected to one ormore of the other devices via a bus 914 that in turn can include data,address, and control buses. The filter interface 922 is connected to thefilter input 916 and filter output 910 cards, and provides input fromthe filter input card 916 to the computer 902 and from the computer 902to the filter output card 910.

[0132] The described arrangements can, alternatively, be implemented onone or more integrated circuits. This mode of implementation allowsincorporation of the filters into individual pieces of equipment wherethe functionality provided by such filters is required.

[0133] The foregoing describes only some particular embodiments of thepresent invention, and modifications can be made thereto withoutdeparting from the scope of the invention, the embodiments beingillustrative and not restrictive. APPENDIX function y=iirfft2(b,a,x,N) %IIRFFT2 IIR fast convolution filter algorithm no. 2 % 1. y = IIRFFT2( b, a , x , N, bits, fixed, dither) % % IIRFFT2 processes the differenceequation given by % % a(1)*y(n) = b(1)*x(n) + b(2)*x(n−1) + ... +b(nb+1)*x(n−nb) % − a(2)*y(n−1) − ... − a(na+1)*y(n−na) % % where theresponse to an input x(n) is given by the following % equation. %B(z)    1 % Y(z) = ---- X(z) + --- ( G(z)−F(z) ) % A(z)   A(z) % % andF(z) = initial conditions of output sequence % G(z) = initial conditionsof input sequence. % % na−n−1      nb−n−1 % f(n) = sum a(n+r+1).y(−1−r),g(n) = sum b(n+r+1).x(−1−r) % r=0       r=0 % % To calculate N outputswe need the first N initial conditions, the % first N samples ofB(z)/A(z), and the first N samples of 1/A(z). % % Let: % H1(z) =z-transform first N samples of inverse z-transform B(z)/A(z) % H2(z) =z-transform first N samples of inverse z-transform 1/A(z) % M =max(na,nb)/N % % The equations above give a method for processing theIIR in the % frequency domain. % % Y(z) = H1(z).X(z) + H2(z).(G(z)−F(z))% % To calculate F(z) & G(z) the cofficients are partitioned in to M × N% point sections. % % Copyright (C) Clarity EQ Pty Limited. All rightsreserved. error(nargchk(3,4,nargin)); if a(1)==0 error(‘First term a(1)cannot equal zero’); end % Make all column vectors [r,c]=size(x);x=x(:); b=b(:); a=a(:); na=length(a); nb=length(b); nx=length(x);nab=max([na nb]); if nargin==3|isempty(N) N=2{circumflex over( )}nextpow2(ceil((nab−1)/4)); end N=2{circumflex over( )}nextpow2(N);  % overlap/partion size, FFT size = 2.NM=ceil(nab/N);  % no. of partitions for this filter K=ceil(nx/N);  % no.of iterations required for output if N>nab error(‘Block size greaterthan order of IIR’); % use IIRFFT when N>=nab end % Setup time < 0initial conditions y=zeros((K+1)*N+nab,1);x=[zeros(nab,1);x;zeros((K+1)*N−nx, 1)]; % Create FIRs in Freq domain %EQUATION 24H1=fft(filter(b(1:min(nb,N)),a(1:min(na,N)),[1;zeros(N−1,1)]),2*N);H2=fft(filter(1,a(1:min(na,N)),[1;zeros(N−1,1)]),2*N); % Initialiseblock shift buffer for I/O Ybuf=zeros(2*N,M); Xbuf=zeros(2*N,M); %Partition a(n) and b(n) to create a′==aa and b′==bbaa=[0;a(2:na);zeros((M+1)*N−na,1)]; bb=[0;b(2:nb);zeros((M+1)*N−nb,1)];Abuf=zeros(2*N,M); Bbuf=zeros(2*N,M); for k=1:MAbuf(:,k)=fft(aa(1+(k−1)*N:(k+1)*N),2*N);Bbuf(:,k)=fft(bb(1+(k−1)*N:(k+1)*N),2*N); end % Iterate K times - untilall x(n) processed for i=1:K % Each iteration is a calculation of Noutput samples % given na−1&nb−1 initial conditions n=(i−1)*N + nab + 1;% Current zero time index - ith block (5000 in fig 5) % Calccoefficients f(n) and g(n) FF=sum(Ybuf.*Abuf,2); %% EQUATION 17: outputof summer 5095 fig 5 GG=sum(Xbuf.*Bbuf,2); %% EQUATION 18: output ofsummer 5150 fig 5 tmp=real(ifft(GG−FF)); %% GG−FF: output of summer 5096in fig 5 G_F=fft(tmp(N+1:2*N),2*N); %% G−F: 5110 in fig 5 % Shift inputbuffer and add new entry Xbuf(:,2:M)=Xbuf(:,1:M−1);Xbuf(:,1)=fft(x(n:n+N−1),2*N); tmp=real(ifft(H1.*Xbuf(:,1)+H2.*G_F)); %%EQUATION 15: 5125 and 5130 in fig 5. y(n:n+N−1)=tmp(1:N); %% 5135 in fig5 % Shift output buffer and add new I/O entry Ybuf(:,2:M)=Ybuf(:,1:M−1);Ybuf(:,1)=fft(y(n:n+N−1),2*N); end % Get output vector and remove delayy=y(nab+1:nab+nx); if r==1 y=y.′; end

1. A method of implementing a digital filter, said method comprising,for a current block of filter input signal values, the steps of: firstdetermining of a partial filter input initial condition, using apartitioned filter input signal, and partitioned filter inputcoefficients; second determining of a partial filter output initialcondition, using a partitioned filter output signal, and partitionedfilter output coefficients; and realising said digital filter as a sumof outputs of FIR filter elements, wherein inputs of said FIR filterelements are dependent upon said partial filter input initial condition,said partial filter output initial condition, and said current block offilter input signal values.
 2. The method according to claim 1, whereinsaid first determining step comprises the sub-steps of: firstpartitioning of filter input signals to form a first partitioned dataset; second partitioning of filter input coefficients to form a secondpartitioned data set; and convolving said first and said second datasets by the sub-steps of: (i) applying a transform to each of said firstand said second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter input initial condition.
 3. Themethod according to claim 1, wherein said second determining stepcomprises the sub-steps of: first partitioning of filter output signalsto form a first partitioned data set; second partitioning of filteroutput coefficients to form a second partitioned data set; andconvolving said first and said second data sets by the sub-steps of: (i)applying a transform to each of said first and said second data sets tothereby form corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter output initial condition.
 4. The methodaccording to any one of claims 1 to 3, wherein a size of the partitionis equal to a size of the current block.
 5. The method according to anyone of claims 1 to 4, wherein a size of the partition is dependent uponone of a required filter latency and a required filter computationalefficiency.
 6. The method according to any one of claims 1 to 5, whereinsaid digital filter is one of a Finite Impulse Response filter, anInfinite Impulse Response Filter, and an All Pole Filter.
 7. A digitalfilter comprising: first means for determining of a partial filter inputinitial condition, using a partitioned filter input signal, andpartitioned filter input coefficients; second means for determining of apartial filter output initial condition, using a partitioned filteroutput signal, and partitioned filter output coefficients; and realisingmeans for realising said digital filter as a sum of outputs of FIRfilter elements, wherein inputs of said FIR filter elements aredependent upon said partial filter input initial condition, said partialfilter output initial condition, and said current block of filter inputsignal values.
 8. The digital filter according to claim 7, wherein saidfirst means comprise: first partitioning means for partitioning offilter input signals to form a first partitioned data set; secondpartitioning means for partitioning of filter input coefficients to forma second partitioned data set; and convolving means for convolving saidfirst and said second data sets by the sub-steps of: (i) applying atransform to each of said first and said second data sets to therebyform corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 9. The digitalfilter according to claim 7, wherein said second means comprises: firstpartitioning means for partitioning of filter output signals to form afirst partitioned data set; second partitioning means for partitioningof filter output coefficients to form a second partitioned data set; andconvolving means for convolving said first and said second data sets bythe sub-steps of: (i) applying a transform to each of said first andsaid second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter output initial condition. 10.The digital filter according to any one of claims 7 to 9, wherein a sizeof the partition is equal to a size of the current block.
 11. Thedigital filter according to any one of claims 7 to 10, wherein a size ofthe partition is dependent upon one of a required filter latency and arequired filter computational efficiency.
 12. The digital filteraccording to any one of claims 7 to 11, wherein said digital filter isone of a Finite Impulse Response filter, an Infinite Impulse ResponseFilter, and an All Pole Filter.
 13. A system using a digital filterwherein said digital filter comprises: first means for determining of apartial filter input initial condition, using a partitioned filter inputsignal, and partitioned filter input coefficients; second means fordetermining of a partial filter output initial condition, using apartitioned filter output signal, and partitioned filter outputcoefficients; and realising means for realising said digital filter as asum of outputs of FIR filter elements, wherein inputs of said FIR filterelements are dependent upon said partial filter input initial condition,said partial filter output initial condition, and said current block offilter input signal values.
 14. The system according to claim 13,wherein said first means comprise: first partitioning means forpartitioning of filter input signals to form a first partitioned dataset; second partitioning means for partitioning of filter inputcoefficients to form a second partitioned data set; and convolving meansfor convolving said first and said second data sets by the sub-steps of:(i) applying a transform to each of said first and said second data setsto thereby form corresponding first and second transformed data sets;(ii) performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 15. The systemaccording to claim 13, wherein said second means comprises: firstpartitioning means for partitioning of filter output signals to form afirst partitioned data set; second partitioning means for partitioningof filter output coefficients to form a second partitioned data set; andconvolving means for convolving said first and said second data sets bythe sub-steps of: (i) applying a transform to each of said first andsaid second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter output initial condition. 16.The system according to any one of claims 13 to 15, wherein a size ofthe partition is equal to a size of the current block.
 17. The systemaccording to any one of claims 13 to 16, wherein a size of the partitionis dependent upon one of a required filter latency and a required filtercomputational efficiency.
 18. The system according to any one of claims13 to 17, wherein said digital filter is one of a Finite ImpulseResponse filter, an Infinite Impulse Response Filter, and an All PoleFilter.
 19. A computer readable memory medium for storing a program forapparatus implementing a digital filter, said program comprising: firstcode for determining of a partial filter input initial condition, usinga partitioned filter input signal, and partitioned filter inputcoefficients; second code for determining of a partial filter outputinitial condition, using a partitioned filter output signal, andpartitioned filter output coefficients; and code for realising saiddigital filter as a sum of outputs of FIR filter elements, whereininputs of said FIR filter elements are dependent upon said partialfilter input initial condition, said partial filter output initialcondition, and said current block of filter input signal values.
 20. Thecomputer readable memory medium according to claim 19, wherein saidfirst code comprises: first code for partitioning of filter inputsignals to form a first partitioned data set; second code forpartitioning of filter input coefficients to form a second partitioneddata set; and code for convolving said first and said second data setsby the sub-steps of: (i) applying a transform to each of said first andsaid second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter input initial condition. 21.The computer readable memory medium according to claim 19, wherein saidsecond code comprises: first code for partitioning of filter outputsignals to form a first partitioned data set; second code forpartitioning of filter output coefficients to form a second partitioneddata set; and code for convolving said first and said second data setsby the sub-steps of: (i) applying a transform to each of said first andsaid second data sets to thereby form corresponding first and secondtransformed data sets; (ii) performing, on said corresponding first andsecond transformed data sets, a transform operation which is equivalentto convolution in the time domain, to thereby form a third data set; and(iii) applying a corresponding inverse transform to said third data set,to thereby determine said partial filter output initial condition. 22.The computer readable memory medium according to any one of claims 19 to21, wherein a size of the partition is equal to a size of the currentblock.
 23. The computer readable memory medium according to any one ofclaims 19 to 22, wherein a size of the partition is dependent upon oneof a required filter latency and a required filter computationalefficiency.
 24. The computer readable memory medium according to any oneof claims 19 to 23, wherein said digital filter is one of a FiniteImpulse Response filter, an Infinite Impulse Response Filter, and an AllPole Filter.
 25. A computer program for apparatus implementing a digitalfilter, said program comprising: first code for determining of a partialfilter input initial condition, using a partitioned filter input signal,and partitioned filter input coefficients; second code for determiningof a partial filter output initial condition, using a partitioned filteroutput signal, and partitioned filter output coefficients; and code forrealising said digital filter as a sum of outputs of FIR filterelements, wherein inputs of said FIR filter elements are dependent uponsaid partial filter input initial condition, said partial filter outputinitial condition, and said current block of filter input signal values.26. The computer program according to claim 25, wherein said first codecomprises: first code for partitioning of filter input signals to form afirst partitioned data set; second code for partitioning of filter inputcoefficients to form a second partitioned data set; and code forconvolving said first and said second data sets by the sub-steps of: (i)applying a transform to each of said first and said second data sets tothereby form corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter input initial condition.
 27. The computerprogram according to claim 25, wherein said second code comprises: firstcode for partitioning of filter output signals to form a firstpartitioned data set; second code for partitioning of filter outputcoefficients to form a second partitioned data set; and code forconvolving said first and said second data sets by the sub-steps of: (i)applying a transform to each of said first and said second data sets tothereby form corresponding first and second transformed data sets; (ii)performing, on said corresponding first and second transformed datasets, a transform operation which is equivalent to convolution in thetime domain, to thereby form a third data set; and (iii) applying acorresponding inverse transform to said third data set, to therebydetermine said partial filter output initial condition.
 28. The computerprogram according to any one of claims 25 to 27, wherein a size of thepartition is equal to a size of the current block.
 29. The computerprogram according to any one of claims 25 to 28, wherein a size of thepartition is dependent upon one of a required filter latency and arequired filter computational efficiency.
 30. The computer programaccording to any one of claims 25 to 29, wherein said digital filter isone of a Finite Impulse Response filter, an Infinite. Impulse ResponseFilter, and an All Pole Filter.